استخدام PWM في الآردوينو
درس يشرح PWM و كيفية و فوائد استخدامه في الآردوينو.
يحتوي الآردوينو على اكثر من مخرج من الممكن استخدامها للحصول على موجات PWM. يستخدم الأمر analogWrite للحصول على هذه الموجات على المخرج المحدد بالأمر وبـ Duty Cycle المحددة في الأمر أيضاً.
يمكن تحديد Duty Cycle تتراوح بين 0 و 255, حيث تمثل القيمة 255 النسبة 100% أي إن فولتية المخرج المحدد ستكون مساوية لفولتية الاردوينو في حين تثمل القيمة 0 النسبة 0% أي إن فولتية المخرج ستكون صفر فولت. للحصول على فولتية تساوي نصف فولتية المصدر على المخرج رقم 3 نستخدم الأمر analogWrite(3,127).
السيطرة على LED. قد يتوهم البعض إن استخدام PWM في السيطرة على إضاءة LED هي ناتجة عن تغير معدل الفولتية الخارجة من الاردوينو و هذا المفهوم خاطيء لكون استجابة الLED لتغير الفولتية قليل جدا و يكون في مجال فولتية ضيق. الا ان اطفاء و تشغيل الـLED بسرعة عالية يوهم العين البشرية بأن اضاءة الـLED تخفت أو تزداد حسب الـDuty Cycle. أي إن زيادة فترة تشغيل الـLED نسبة إلى عرض النبضة ستوهم العين البشرية بزيادة توهج الـLED. اذا فالـLED يكون في حالة انطفاء و اشتغال سريعة جدا ولا يكون في حالة تشغيل خافت.
لنقم الآن بكتابة برنامج بسيط يقوم بقياس الفولتية على المدخل رقم A0 و على أساس قيمتها يقوم بالسيطرة على LED مربوط إلى المخرج رقم 3.
void setup() {
}
void loop() {
int VI;
int VO;
VI = analogRead(0);
VO = VI/4;
analogWrite(3,VO);
}
يقوم البرنامج في البداية بقياس الفولتية على المدخل A0, ثم يقوم بتقسيم الفولتية على 4 لكون ناتج قياس الفولتية يكون من 0 الى 1023 في حين ان تحديد Duty Cycle يكون من 0 إلى 255. يقوم البرنامج بعد ذلك بتوليد إشارة PWM على المخرج رقم 3.
هناك طريقة اخرى للحصول على فولتية تماثلية من الاردوينو, تكون الفولتية الخارجة من هذه الطريقة اقرب الى DC من طريقة PWM. تتلخص هذه الطريقة بقياس الفولتية الموجودة على نقطة معينة ثم ربطها إلى مصدر الفولتية في حال نقصان هذه الفولتية عن الحد المطلوب لغاية عودتها إلى الفولتية المطلوبة. يجب ربط متسعة على التوازي مع الحمل في هذه الحالة و ربط مخرج الاردوينو مع المتسعة و الحمل عن طريق دايود لكي لا يتسبب الاردوينو بنقصان الفولتية عند جعل الفولتية على المخرج رقم 3 تساوي صفر. يمكن أيضاً السيطرة على فولتيات عالية بهذه الطريقة عن طريق استخدام مقاومات لتقليل الفولتية حسب مبدأ تقسيم الفولتية و ربطها الى الاردوينو ليحصل الاردوينو على عينة من الفولتية الموجودة و يقوم باتخاذ القرار حسب قيمة العينة. سيتم مناقشة هذه الطريقة لاحقا في موضوع منفصل إن شاء الله.